package jmine.tec.persist.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Anotação para definição de unique constraint.<br/>
 * Para determinar que uma coluna é única, anotar o getter e não preencher "columns".<br/>
 * Para múltiplas colunas, anote diretamente na classe da entidade.<br/>
 * 
 * @author lundberg
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD, ElementType.TYPE })
public @interface UniqueConstraint {

    /**
     * Nome da restrição
     */
    String name() default "";

    /**
     * Colunas a que a restrição se aplica. Deve ser deixado vazio quando for possível inferir.
     * 
     * @return
     */
    String[] columns() default {};

    /**
     * Valor do sufixo, ao passa-lo não será nescessário passar o valor de name
     */
    String suffix() default "";

}
